In storage-design systems, the problem is to generate assignments of stores to storage device Logical Units (LUs) based on information about the workload associated with the stores. A store represents a consumer of space on a storage device, such as a file, database, database table, or file system. An LU is a unit of storage having a particular size that is selected by taking into account the capacity of the storage device so that a particular number of LUs can be efficiently placed on the storage device, with the goal of maximizing overall storage efficiency. The storage design problem is to select an assignment of stores to LUs that meet objectives, such as minimizing the cost of the system while meeting the performance needs of the workload. The workload is described in the form of one or more streams associated with each store.
The generated assignments must not violate certain constraints, such as the capacity constraint, which is simply that a storage device cannot have more stores placed onto it than will fit, and the utilization constraint, which is that a storage device cannot be busy, or utilized, more than 100% of the time. The calculation of one particular example constraint known as phased utilization is extremely time consuming. The phased utilization calculation predicts the expected utilization of a storage device taking into account the phasing behavior of the workloads applied to it. In some variants of the phased utilization calculation, the time taken to execute it grows very rapidly—certainly more than linearly—as the number of stores assigned to a storage device increases.
As a result of the computationally intensive nature of phased utilization calculations, computing complete assignments can take several days in some cases. Computing workload assignments should take on the order of minutes or seconds, not days. It would be desirable to reduce the number of constraint calculations that need to be performed so that the amount of time required to compute assignments can be reduced. It would also be desirable to reduce the number of stores that are considered during each phased utilization calculation.
By reducing and/or eliminating certain constraint calculations, the amount of time required to compute assignments can be reduced, In turn, by reducing the amount of time required to compute assignments, larger, more complex assignments can be computed. This would allow storage system design tools to generate design solutions for larger, complex storage systems in reasonable amounts of time. Accordingly, a need exists for a method and apparatus that enable the number of constraint calculations that must be performed in computing assignments to be reduced, or the number of stores considered in such calculations to be reduced, or both, thereby enabling the overall amount of time required to compute assignments to be reduced. By achieving these goals, design solutions for large, complex storage systems can be efficiently computed.